/**   
* @Title: UserSqlProvider.java
* @Package org.xaoyaoyao.cloud.mybatis.provider
* @Description: TODO
* @author xaoyaoyao
* @date Feb 13, 2019 5:59:32 PM
* @version V1.0   
*/
package org.xaoyaoyao.cloud.mybatis.provider;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;

/**
 * @ClassName: UserSqlProvider
 * @Description: 主要用途：根据复杂的业务需求来动态生成SQL.
 *               目标：使用Java工具类来替代传统的XML文件.(例如：UserSqlProvider.java <--
 *               UserMapper.xml)
 * @author xaoyaoyao
 * @date Feb 13, 2019 5:59:32 PM
 * 
 */
public class UserSqlProvider {

	/**
	 * 方式1：在工具类的方法里,可以自己手工编写SQL。
	 */
	public String listByUserName(String userName) {
		return "SELECT * FROM t_user WHERE user_name = #{userName}";
	}

	/**
	 * 方式2：也可以根据官方提供的API来编写动态SQL。
	 */
	public String getBadUser(@Param("userName") String userName, @Param("password") String password) {
		return new SQL() {
			{
				SELECT("*");
				FROM("t_user");
				if (userName != null && password != null) {
					WHERE("user_name LIKE #{userName} AND password like #{password}");
				} else {
					WHERE("1=2");
				}
			}
		}.toString();
	}

}
